package com.bytedance.dao;

import com.bytedance.dataobject.User;
import org.apache.ibatis.annotations.*;

@Mapper
public interface UserDAO {

    /**
     * 新增用户
     *
     * @param user 用户对象
     * @return 新增成功记录条数
     */
    @InsertProvider(type = UserProvider.class, method = "insertSQL")
    @Options(useGeneratedKeys = true, keyProperty = "id")
    int add(User user);

    /**
     * 修改用户信息
     *
     * @param user 用户对象
     * @return 修改成功记录条数
     */
    @UpdateProvider(type = UserProvider.class, method = "updateSQL")
    int update(User user);

    /**
     * 根据id获取用户
     *
     * @param id 用户id
     * @return 用户对象
     */
    @SelectProvider(type = UserProvider.class, method = "selectByIdSQL")
    User getById(Integer id);

    /**
     * 根据用户名获取用户
     *
     * @param username 用户名
     * @return 用户对象
     */
    @SelectProvider(type = UserProvider.class, method = "selectByUsernameSQL")
    User getByUsername(String username);

}